import random
import string

def generate_test_words():
    """
    生成用于测试编辑距离算法的测试词对
    返回一个列表，每个元素是一个元组 (word1, word2, description)
    """
    test_cases = []
    
    # 生成随机字符串的辅助函数
    def random_string(length):
        return ''.join(random.choice(string.ascii_lowercase) for _ in range(length))
    
    # 测试用例1：空字符串
    test_cases.append(("", "", "空字符串"))
    
    # 测试用例2：一个空字符串，一个非空字符串
    test_cases.append(("", "hello", "一个空字符串，一个非空字符串"))
    
    # 测试用例3：相同的字符串
    same_str = random_string(10)
    test_cases.append((same_str, same_str, "相同的字符串"))
    
    # 测试用例4：只有一个字符不同的字符串
    word1 = random_string(10)
    word2 = word1[:5] + random.choice(string.ascii_lowercase) + word1[6:]
    test_cases.append((word1, word2, "只有一个字符不同的字符串"))
    
    # 测试用例5：只需要一次插入操作的字符串
    word1 = random_string(10)
    position = random.randint(0, len(word1))
    word2 = word1[:position] + random.choice(string.ascii_lowercase) + word1[position:]
    test_cases.append((word1, word2, "只需要一次插入操作的字符串"))
    
    # 测试用例6：只需要一次删除操作的字符串
    word1 = random_string(10)
    position = random.randint(0, len(word1) - 1)
    word2 = word1[:position] + word1[position + 1:]
    test_cases.append((word1, word2, "只需要一次删除操作的字符串"))
    
    # 测试用例7：短字符串
    test_cases.append((random_string(3), random_string(4), "短字符串"))
    
    # 测试用例8：中等长度字符串
    test_cases.append((random_string(20), random_string(20), "中等长度字符串"))
    
    # 测试用例9：长字符串
    test_cases.append((random_string(50), random_string(50), "长字符串"))
    
    # 测试用例10：非常长的字符串
    test_cases.append((random_string(100), random_string(100), "非常长的字符串"))
    
    return test_cases

if __name__ == "__main__":
    # 生成测试词并打印
    test_words = generate_test_words()
    for i, (word1, word2, desc) in enumerate(test_words, 1):
        print(f"测试用例 {i} ({desc}):")
        print(f"  word1: {word1}")
        print(f"  word2: {word2}")
        print()